package com.education.myrongyun;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.Conversation.ConversationType;
import io.rong.imlib.model.Message;
import io.rong.imlib.model.MessageContent;
import io.rong.message.TextMessage;

public class MainActivity extends AppCompatActivity {
    String token = "KO86ghxDTjrGYq/dDfbVwR3WEqSu1CIeDbXAXsq9GB8Wv0XIBh/h52uM8oRHuNr4f0ALzKb8kKg=";
    private Button mBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RongIMClient.setOnReceiveMessageListener(new MyReceiveMessageListener());
        connect(token);
        mBtn = (Button) findViewById(R.id.btn_conversation);
        mBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /**
                 * 发送消息。
                 * @param conversationType  会话类型 单人聊天 群聊 聊天室 系统消息 工作组
                 * @param targetId          会话ID
                 */
                RongIMClient.getInstance().sendMessage(ConversationType.PRIVATE, "101",
                        TextMessage.obtain("我是消息内容"), null, null, new RongIMClient.SendMessageCallback() {
                            @Override
                            public void onSuccess(Integer integer) {
                                Log.d("", "发送成功");
                            }

                            @Override
                            public void onError(Integer integer, RongIMClient.ErrorCode errorCode) {
                                Log.d("", "发送失败");
                            }
                        }, null);
            }
        });


    }

    private class MyReceiveMessageListener implements RongIMClient.OnReceiveMessageListener {

        /**
         * 收到消息的处理。
         *
         * @param message 收到的消息实体。
         * @param left    剩余未拉取消息数目。
         * @return
         */
        @Override
        public boolean onReceived(Message message, int left) {
            if (message.getConversationType() == ConversationType.PRIVATE) {
                MessageContent content = message.getContent();

                if (content instanceof TextMessage) {
                    TextMessage text = (TextMessage) content;
                    String msgContent = text.getContent();
                    Log.d(".....", "接受到消息" + msgContent);
                }
            }

            //开发者根据自己需求自行处理
            return false;
        }
    }

    /**
     * 建立与融云服务器的连接
     *
     * @param token
     */
    private void connect(String token) {

        if (getApplicationInfo().packageName.equals(App.getCurProcessName(getApplicationContext()))) {

            /**
             * IMKit SDK调用第二步,建立与服务器的连接
             */
            RongIMClient.connect(token, new RongIMClient.ConnectCallback() {

                /**
                 * Token 错误，在线上环境下主要是因为 Token 已经过期，您需要向 App Server 重新请求一个新的 Token
                 */
                @Override
                public void onTokenIncorrect() {

                    Log.d("LoginActivity", "--onTokenIncorrect");
                }

                /**
                 * 连接融云成功
                 * @param userid 当前 token
                 */
                @Override
                public void onSuccess(String userid) {

                    Log.d("LoginActivity", "--onSuccess---" + userid);
                }

                /**
                 * 连接融云失败
                 * @param errorCode 错误码，可到官网 查看错误码对应的注释
                 */
                @Override
                public void onError(RongIMClient.ErrorCode errorCode) {

                    Log.d("LoginActivity", "--onError" + errorCode);
                }
            });
        }
    }
}
